﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Iacym.Entities;
using Iacym.Repository;
using Microsoft.Practices.Unity;

namespace Iacym.BusinessLogic
{
    public class AgendumBL : IAgendumBL
    {
        [Dependency]
        public IAgendumRepository agendaRepo { get; set; }

        public void AddAgenda(Agendum agenda)
        {
            var msg = "";

            var ok = agenda.Validate(out msg);

            if (ok)
            {
                var duplicidad = agendaRepo.DuplicidadCita(agenda.FechaInicio, agenda.FechaFin);
                if (!duplicidad)
                {
                    agendaRepo.AddAgenda(agenda);
                }
                else
                {
                    var error = string.Format("Ya existe una cita programada para esa fecha.");
                    throw new Exception(error);
                }

            }
            else
            {
                throw new Exception(msg);
            }
        }

        public List<Agendum> GetAllFromAgenda()
        {
            return agendaRepo.GetAllFromAgenda();
        }

        public Agendum BuscarAgendaPorFechas(DateTime inicio, DateTime fin)
        {
            return agendaRepo.BuscarAgendaPorFechas(inicio, fin);
        }


        public void UpdateAgenda(Agendum agenda)
        {
            agendaRepo.UpdateAgenda(agenda);
        }
    }
}
